<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
		function Person (name,age) {
			this.name = name;
			this.age = age;
		}
		var p = new Person("张三",19);
        // console.log(p);
		
		// var func = new Function("console.log('我是动态创建的函数');console.log(1);");
		// func();
		
		// Function这个构造函数 可以用来新建函数对象
		// 语法:
		// 0.一个参数都不传的情况,创建的就是一个空函数
		// var 函数名 = new Function();
		// 1.只传一个参数的情况 这个参数就是函数体
		// var 函数名 = new Function("函数体");
		// 2.传多个参数的情况,最后一个参数为函数体,前面的参数都是该函数的形参名
		
		// 练习:使用Function创建一个打印4句歌词的函数
		// var func = new Function("geci","console.log(geci);");
		// func('四季歌词');
		
		// 举个例子
		// 创建一个计算两个数的和的函数
		// var sum = new Function("a","b","return a + b;");
		// console.log(sum(1,2));
		
		// 练习: 利用Function创建一个求三个数中最大声的函数
		// var max = new Function("a","b","c","return (a > b ? a : b) > c ? (a > b ? a : b) : c;");
		// console.log(max(1,2,3));
		
		// 练习: 传入一个数组,求这个数组中的最大数
		// var max = new Function("arr",
		// 		"var maxNum = arr[0];" + 
		// 		"for(var i = 0;i < arr.length;i++){" +
		// 		"if(maxNum < arr[i]){" +
		// 		"maxNum = arr[i];" +
		// 		"}" + 
		// 		"}" +
		// 		"return maxNum;"
		// );
		// console.log(max([1,2,34,44,5,6]));
		
		// window.onload = function() {
		// 	var script = document.getElementById("funcContent");
		// 	var str = script.innerHTML;
		// 	var max = new Function("arr",str);
		// 	console.log(max[1,2,3,44,5,6]);
		// }
		
		// 如何解决使用Function创建函数时,代码过长的问题
		// 1.使用字符串拼接,让代码换行
		// 2.使用模板的方式,将代码写在模板标签内,获取该标签的内容
		// 3.使用反引号(')引住字符串,那么就可以换行了
		var str = `adasdfsadf
				asdfasdf`;
		console.log(str);
		
		// 利用Function创建一个函数,
		// 要求允许函数调用时传入任意个数参数,
		// 并且函数返回这些数字中最大的数字
		function test () {
			
		}
		test(1,244,4);
		
	</script>
	<script type="text/template" id = "funcContent">
		var maxNum = arr[0];
		for (var i = 0;i < i.length;i++) {
			if(maxNum < arr[i]) {
				maxNum = arr[i];
			}
			
		}
		return maxNum;
	</script>
</head>
<body>

</body>
</html>